impl->saved_height = -1;
}
-/* Keep a list of orphaned dialogs (i.e. without parent) */
-static GList *orphan_dialogs;
-
static void
_gdk_wayland_screen_add_orphan_dialog (GdkWindow *window)
{
- if (!g_list_find (orphan_dialogs, window))
- orphan_dialogs = g_list_prepend (orphan_dialogs, window);
+ GdkWaylandDisplay *display_wayland =
+ GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
+
+ if (!g_list_find (display_wayland->orphan_dialogs, window))
+ display_wayland->orphan_dialogs =
+ g_list_prepend (display_wayland->orphan_dialogs, window);
}
static void
GdkWindowImplWayland *impl_parent = NULL;
struct xdg_surface *parent_surface;
+ g_assert (parent == NULL ||
+ gdk_window_get_display (window) == gdk_window_get_display (parent));
+
if (!impl->display_server.xdg_surface)
return;
static void
gdk_wayland_window_update_dialogs (GdkWindow *window)
{
+ GdkWaylandDisplay *display_wayland =
+ GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GList *l;
- if (!orphan_dialogs)
+ if (!display_wayland->orphan_dialogs)
return;
- for (l = orphan_dialogs; l; l = l->next)
+ for (l = display_wayland->orphan_dialogs; l; l = l->next)
{
GdkWindow *w = l->data;
GdkWindowImplWayland *impl;
impl->display_server.outputs = NULL;
if (impl->hint == GDK_WINDOW_TYPE_HINT_DIALOG && !impl->transient_for)
- orphan_dialogs = g_list_remove (orphan_dialogs, window);
+ display_wayland->orphan_dialogs =
+ g_list_remove (display_wayland->orphan_dialogs, window);
}
_gdk_wayland_window_clear_saved_size (window);
GdkWindow *parent)
{
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+ GdkWaylandDisplay *display_wayland =
+ GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWindow *previous_parent;
+ g_assert (parent == NULL ||
+ gdk_window_get_display (window) == gdk_window_get_display (parent));
+
if (check_transient_for_loop (window, parent))
{
g_warning ("Setting %p transient for %p would create a loop", window, parent);
if (!parent)
_gdk_wayland_screen_add_orphan_dialog (window);
else if (!previous_parent)
- orphan_dialogs = g_list_remove (orphan_dialogs, window);
+ display_wayland->orphan_dialogs =
+ g_list_remove (display_wayland->orphan_dialogs, window);
}
gdk_wayland_window_sync_parent (window, NULL);
if (should_map_as_subsurface (window) &&